package cn.djb.day24;

import java.util.ArrayList;
import java.util.List;

/**
 * 输入一个正整数 target ，输出所有和为 target 的连续正整数序列（至少含有两个数）。
 * <p>
 * 序列内的数字由小到大排列，不同序列按照首个数字从小到大排列。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
class Solution_2 {

    /**
     * 滑动窗口
     * @param target
     * @return
     */
    public int[][] findContinuousSequence(int target) {

        List<int[]> res = new ArrayList<>();
        int left = 1, right = 2, sum = 3;

        while (left < right) {
            if (sum == target) {
                int[] ints = new int[right - left + 1];
                for (int i = 0; i < ints.length; i++) {
                    ints[i] = left + i;
                }
                res.add(ints);
            }
            if (sum >= target) {
                sum-=left;
                left++;

            } else {
                right++;
                sum+=right;
            }

        }

        return res.toArray(new int[0][]);

    }
}